/**
 * PriceService.java
 * 
 * Copyright@2015 OVT Inc. All rights reserved. 
 * 
 * Dec 29, 2015
 */
package com.ovt.doorbell.payment.service;

import com.ovt.doorbell.payment.dao.constant.ResourceType;
import com.ovt.doorbell.payment.dao.vo.FullMemberProfile;
import com.ovt.doorbell.payment.dao.vo.MemberProfile;
import com.ovt.doorbell.payment.dao.vo.Order;
import com.ovt.doorbell.payment.service.exception.ServiceException;

/**
 * PriceService
 * 
 * @Author zhi.liu
 * @Version 1.0
 * @See
 * @Since [OVT Cloud Platform]/[API] 1.0
 */
public interface PriceService
{

    /**
     * Calculate order fee.
     * 
     * @param memberProfile
     * @param order
     * @return
     */
    void calculateOrderFee(MemberProfile memberProfile, Order order)
            throws ServiceException;

    /**
     * Calculate refund fee.
     * 
     * @param fullMemberProfile
     */
    void calculateRefundFee(FullMemberProfile fullMemberProfile)
            throws ServiceException;

    /**
     * Calculate refund fee of specified resource type.
     * 
     * @param fullMemberProfile
     * @param resourceType
     * @return
     * @throws ServiceException
     */
    public float calculateRefundFee(FullMemberProfile fullMemberProfile,
            ResourceType resourceType) throws ServiceException;
}
